#include"process.h"
#include<string.h>
#define size 101
#define style '='
//version 1
//仅仅是教学原理，不作为实际应用使用
//void process()
//{//光标优化
//  const char* str="|/-\\";
//  int len=strlen(str);
//  //字符串
//  char processbuffer[size];
//  memset(processbuffer,'\0',sizeof(processbuffer));
//  int cnt=0;
//  while(cnt<=100)
//  {//     打印字符  打印数字%  打印光标
//    printf("[%-100s][%d%%][%c]\r",processbuffer,cnt,str[cnt%len]);
//    //%%

//单个 % 在 printf 中是格式化占位符的起始符号（如 %d, %s）。
//
//当需要直接输出百分号字符 %（而非作为占位符）时，必须使用 %% 来转义。
//
//这里 %% 会被输出为一个字面的 % 字符。
//    fflush(stdout);
//    processbuffer[cnt++]=style;
//    //sleep(1);每隔一秒打印一次
//    usleep(50000);//usleep单位是毫秒，表示限定5秒内打印完
//  }
//  printf("\n");
//}
//varversion 2
void flashprocess(double total,double cur)
{
  if(cur>total)
    cur=total;
  double rate=cur/total*100;//比率
  int cnt=(int)rate;
  
  char processbuffer[size];
  memset(processbuffer,'\0',sizeof(processbuffer));
  for(int i=0;i<cnt;i++)
  {
    processbuffer[i]=style;
  }
  //旋转光标
  const static char* lable="|/-\\";
  
  static int index=0;
   //刷新
   printf("[%-100s][%.1lf%%][%c]\r",processbuffer,rate,lable[index++]);
   index %=strlen(lable);
   fflush(stdout);
   if(cur>=total)
   {
     printf("\n");
   } 
}
